你從一無所知,到現在對 Clojure 有了初步的認識。首先知道了 Clojure 的基本組成以及資料結構與型態,接着學會了如何建立繫結與函式,知道了控制程式流程的方式,以及如何組織專案和建立命名空間,以有系統的方式統整程式碼。
接下來你知道了自行建立資料型態的方式,並知道與 Java 和諧共存將會使你的程式更加穩健可靠。你還知道了在 Clojure 中讀取器扮演的角色,以及添加詮釋資料的手法。更重要的是,你學會了並行與併發的設計方法,以及如何有效正確的處理狀態。
你還學會了被稱爲魔法的巨集。接下來呢?
本篇文章將介紹延伸資訊,供讀者在讀完本系列文章後,進一步學習的方向和參考。
ClojureScript 是建立在 JavaScript 之上的 Clojure。使用了 Google 開發的 Closure Compiler 與 Closure Library,作爲轉譯工具與函式庫,將 Clojure 程式語言轉譯成 JavaScript。使用者可以使用已內建不變性與函數式設計的語言,而不需四處尋找解決方案或重新發明輪子。
做爲一個動態語言,Clojure 雖然有類型註釋可以標註型態,但是因爲非強制,所以使用者必須更加小心型態之間的變化。
從 1.9 開始,Clojure 內建了 clojure.spec 的命名空間,讓使用者可以建立型態與函式的規範。除了讓使用者清楚明瞭之外,還可以利用規則驗證資料、自動測試、以及自動產生測試資料。
Cortex 是一個以 Clojure 開發的機器學習函式庫,即將邁向 1.0 版本。
Ring 類似與 Ruby 中的 Rack 或 Python 中的 WSGI,將 HTTP 抽象化後提供簡單的 API 供使用者建立網站應用程式。而 Compojure 則是可以與 Ring 搭配使用的路由選擇函式庫。
Reagent 是由 ClojureScript 開發的框架,使用 Facebook 開發的 React 使用者介面函式庫,易於使用與簡潔的語法。
以下列出建議讀者繼續閱讀的書籍:
The Joy of Clojure,Manning 出版社
Mastering Clojure Macros,The Pragmatic Programmer 出版社
The Little Schemer,麻省理工出版社
On Lisp,作者 Paul Graham
在本地,有一群熱愛 Lisp 與 Clojure 程式語言的有志之士,組織了 Clojure Taiwan 社群。每月的聚會除了有專題分享之外,還有定期的讀書會,與參與者一起學習 Clojure。
聯絡社群的管道有臉書、推特與 Telegram,詳細聯絡方式都可以在官網上找到。
最後,本系列文章不應該是你學習 Clojure 的終點,而是起點。帶着從此處學習到的知識,踏進外頭廣闊的世界,將 Clojure 運用在你的工作或專案上,擁抱 Clojure。
將門關上並不是停止,而是踏出新的旅程。
還不賴吧?諸君,後會有期!
每個人都知道他終會孤寂,在酒店關門之後。
— 戴夫•凡•藍克《最後的召喚》
(本篇文章同步刊登於 GitHub,歡迎在文章下方留言或發送 PR 給予建議與指教)